home *** CD-ROM | disk | FTP | other *** search
- #include "defs.h"
-
- Prototype __regargs void update_list(PE *);
- Prototype __regargs void del_prienv(PE *);
- Prototype void cleanup(void);
- Prototype __regargs void FreeRem(LONG *);
- Prototype __regargs void *AllocRem(PE *, LONG);
-
-
- /*********************** del_prienv() **************************/
- __regargs void
- del_prienv(PE *pe)
- {
- Remove(pe);
- FreeRem(pe->memory);
-
- do_storage_str(NULL);
- update_list(NULL);
- }
-
-
- /*********************** update_list() *****************************/
- int stored = 0;
-
- __regargs void
- update_list(PE *pe)
- {
- int *store = &stored;
-
- if (pe != NULL)
- {
- ++*store;
- Enqueue(&List_storage_list, pe);
- }
-
- GT_SetGadgetAttrs(Gad_storage_list, win, NULL,
- GTLV_Labels, &List_storage_list,
- TAG_END);
- if (pe == NULL)
- {
- --*store;
-
- if (*store < 9)
- DrawImage(win->RPort, images[*store], 205, 32); /* refresh logo */
-
- }
- }
-
- /*********************** cleanup(void) ******************************/
- void
- cleanup(void)
- {
- if (autom) /* last chance */
- {
- for (SHORT i = 0; i < 2; ++i)
- do_all(i);
- }
- PE *pe;
- pe = (PE *)List_storage_list.mlh_Head;
- while (pe != (PE *)&List_storage_list.mlh_Tail)
- {
- PE *pet = pe->pe_node.ln_Succ;
- RemHead(&List_storage_list);
- FreeRem(pe->memory);
- pe = pet;
- }
- close_prt();
- }
-
- /*********************** FreeRem ******************************/
- __regargs void /* like free() */
- FreeRem(LONG *memory)
- {
- LONG *ptr;
- while(ptr = memory)
- {
- memory = (LONG *)ptr[0];
- FreeMem(ptr, ptr[1]);
- }
- }
-
- /*********************** AllocRem ******************************/
- __regargs void * /* like malloc() */
- AllocRem(PE *pe, LONG bytes)
- {
- LONG *ptr;
- ptr = (LONG *)AllocMem(bytes + 8, MPC);
- if (ptr)
- {
- (LONG *)ptr[0] = pe->memory;
- pe->memory = ptr;
- ptr[1] = bytes + 8;
- ptr += 2;
- return((void *)ptr);
- }
- else
- {
- quit = TRUE;
- autom = TRUE;
- }
- }
-
-